﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Runtime.InteropServices;
namespace RookieLibSharp.WinApi
{
    /// <summary>
    /// 窗体动画类型枚举
    /// </summary>
    public enum AnimateWindowFlags : uint
    {
        /// <summary>
        /// 自左向右显示窗口，该标志可以在滚动动画和滑动动画中使用。使用AW_CENTER标志时忽略该标志
        /// </summary>
        AW_HOR_POSITIVE = 0x00000001,
        /// <summary>
        /// 自右向左显示窗口，该标志可以在滚动动画和滑动动画中使用。使用AW_CENTER标志时忽略该标志
        /// </summary>
        AW_HOR_NEGATIVE = 0x00000002,
        /// <summary>
        /// 自顶向下显示窗口，该标志可以在滚动动画和滑动动画中使用。使用AW_CENTER标志时忽略该标志
        /// </summary>
        AW_VER_POSITIVE = 0x00000004,
        /// <summary>
        /// 自下向上显示窗口，该标志可以在滚动动画和滑动动画中使用。使用AW_CENTER标志时忽略该标志该标志
        /// </summary>
        AW_VER_NEGATIVE = 0x00000008,
        /// <summary>
        /// 若使用了AW_HIDE标志，则使窗口向内重叠；否则向外扩展
        /// </summary>
        AW_CENTER = 0x00000010,
        /// <summary>
        /// 隐藏窗口 
        /// </summary>
        AW_HIDE = 0x00010000,
        /// <summary>
        /// 激活窗口，在使用了AW_HIDE标志后不要使用这个标志  
        /// </summary>
        AW_ACTIVATE = 0x00020000,
        /// <summary>
        /// 使用滑动类型动画效果，默认为滚动动画类型，当使用AW_CENTER标志时，这个标志就被忽略
        /// </summary>
        AW_SLIDE = 0x00040000,
        /// <summary>
        /// 使用淡入淡出效果
        /// </summary>
        AW_BLEND = 0x00080000
    }
    public static partial class Win32Api
    {
        /// <summary>
        /// 窗体动画函数
        /// </summary>
        /// <param name="hwnd">指定产生动画的窗口句柄</param>
        /// <param name="time">指定动画持续的时间</param>
        /// <param name="flags">动画类型</param>
        /// <returns></returns>
        [DllImport("user32")]
        public static extern bool AnimateWindow(IntPtr hwnd, int time, AnimateWindowFlags flags); 
    }
}
